//Decorator（装饰器模式）
//Decorator模式动态地将责任添加到对象上。在Go语言中，可以使用接口嵌套和函数式编程来实现装饰器模式。

package decorator

type Component interface {
	Method()
}

type ConcreteComponent struct{}

func (c *ConcreteComponent) Method() {}

type Decorator interface {
	Component
}

type ConcreteDecoratorA struct {
	Component
}

func (c *ConcreteDecoratorA) Method() {
	c.Component.Method()
}

type ConcreteDecoratorB struct {
	Component
}

func (c *ConcreteDecoratorB) Method() {
	c.Component.Method()
}
